package com.zhijian.medical.service;

import com.zhijian.medical.entity.po.RoutinePatientDiagnoseReport;
import com.zhijian.medical.entity.vo.request.RoutinePatientDiagnoseReportSearchVo;
import com.zhijian.medical.entity.vo.request.RoutinePatientDiagnoseReportSaveOrUpdateVo;
import com.zhijian.medical.entity.vo.response.*;
import com.zhijian.util.page.Page;

import java.util.List;

/**
 * 诊断-结构化报告 业务处理层
 *
 * @author auto
 * @version 1.0
 * @date 2024-11-29 17:36:35
 */
public interface RoutinePatientDiagnoseReportService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    RoutinePatientDiagnoseReport selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    RoutinePatientDiagnoseReportVo selectVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 按照主键批量删除
     *
     * @param idList
     */
    void deleteByIdList(List<Long> idList);

    /**
     * 新增
     *
     * @param routinePatientDiagnoseReport
     * @return
     */
    Long insert(RoutinePatientDiagnoseReport routinePatientDiagnoseReport);

    /**
     * 动态新增
     *
     * @param routinePatientDiagnoseReport
     * @return
     */
    Long insertSelective(RoutinePatientDiagnoseReport routinePatientDiagnoseReport);

    /**
     * 更改
     *
     * @param routinePatientDiagnoseReport
     * @return
     */
    boolean update(RoutinePatientDiagnoseReport routinePatientDiagnoseReport);

    /**
     * 动态修改
     *
     * @param record
     * @return
     */
    boolean updateByPrimaryKeySelective(RoutinePatientDiagnoseReport record);

    /**
     * 保存
     *
     * @param saveOrUpdateVo
     * @return
     */
    boolean save(RoutinePatientDiagnoseReportSaveOrUpdateVo saveOrUpdateVo);

    /**
     * 编辑
     *
     * @param saveOrUpdateVo
     * @return
     */
    boolean modify(RoutinePatientDiagnoseReportSaveOrUpdateVo saveOrUpdateVo);

    /**
     * 列表
     *
     * @param routinePatientDiagnoseReportSearchVo
     * @return
     */
    RoutinePatientDiagnoseReportVo selectOne(RoutinePatientDiagnoseReportSearchVo routinePatientDiagnoseReportSearchVo);

    /**
     * 总数
     *
     * @param routinePatientDiagnoseReportSearchVo
     * @return
     */
    Integer count(RoutinePatientDiagnoseReportSearchVo routinePatientDiagnoseReportSearchVo);

    /**
     * 列表
     *
     * @param routinePatientDiagnoseReportSearchVo
     * @return
     */
    List<RoutinePatientDiagnoseReportVo> selectList(RoutinePatientDiagnoseReportSearchVo routinePatientDiagnoseReportSearchVo);

    /**
     * 分页查询
     *
     * @param routinePatientDiagnoseReportSearchVo
     * @return
     */
    Page<RoutinePatientDiagnoseReportVo> selectPage(RoutinePatientDiagnoseReportSearchVo routinePatientDiagnoseReportSearchVo);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities 实例对象列表
     * @return 影响行数
     */
    boolean insertBatch(List<RoutinePatientDiagnoseReport> entities);

    /**
     * 动态删除，慎重用此方法！！
     *
     * @param routinePatientDiagnoseReportSearchVo
     * @return
     */
    void deleteByCondition(RoutinePatientDiagnoseReportSearchVo routinePatientDiagnoseReportSearchVo);


    /**
     * 获取报告选项
     */
    RoutinePatientDiagnoseReportOptionVo getOption();

    /**
     * 获取食道癌选项
     */
    RoutinePatientDiagnoseReportEsophagusOptionVo getEsophagusOption();


    /**
     * 获取胃癌选项
     */
    RoutinePatientDiagnoseReportStomachOptionVo getStomachOption();

    /**
     * 获取直肠癌选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportColorectalOptionVo getColorectalOption();

    /**
     * 获取肝癌选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportLiverOptionVo getLiverOption();

    /**
     * 获取胰胆壶腹癌选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportPancreaticOptionVo getPancreaticOption();

    /**
     * 获取肺癌选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportLungsOptionVo getLungsOption();

    /**
     * 获取乳腺癌选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportBreastOptionVo getBreastOption();

    /**
     * 获得新辅后乳腺癌报告选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportAdjuvantBreastOptionVo getAdjuvantBreastOption();

    /**
     * 获得前列腺癌报告选项
     *
     * @return
     */
    RoutinePatientDiagnoseReportProstateOptionVo getProstateOption();

    /**
     * 获得膀胱癌报告选项
     * @return
     */
    RoutinePatientDiagnoseReportBladderOptionVo getBladderOption();

    /**
     * 获得胶质瘤报告选项
     * @return
     */
    RoutinePatientDiagnoseReportColloidOptionVo getColloidOption();
}